home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / DEF / Process / Clone / clone-section-class < prev   
Text File  |  1998-10-23  |  3KB  |  46 lines

  1. clone-section-class
  2.  
  3. clone-section-class enables you to define those sections and classes of the source instrument you want to clone to a target instrument. You can also define new target sections and describe how they differ from the original.
  4.  
  5. Section cloning takes place in given classes, a source instrument and a multitude of target instruments. The following clones bass zones and symbols to synth1 and synth2 so that bass section a becomes section b of synth1 and synth2, and the bass section b becomes the sections c and e of synth1 and synth2. The nil after each section statement indicates that no operations are performed on the sections currently beeing cloned.
  6.  
  7. (clone-section-class (zone symbol) bass (synth1 synth2)
  8.    sect-a sect-b nil
  9.    sect-b (sect-c sect-e) nil
  10. )
  11.  
  12. Both the source classes and target instruments can be a quoted atom representing one entity or a quoted list of entities. So, the following notation is also valid.
  13.  
  14. (clone-section-class symbol bass synth
  15.    sect-a (sect-b sect-c) nil
  16.    sect-b (sect-d sect-e) nil
  17. )
  18.  
  19. You can also clone all classes at once using the :all keyword. This clones the bass section a to synth1 and synth2 in section b.
  20.  
  21. (clone-section-class :all bass (synth1 synth2)
  22.    sect-a sect-b nil
  23. )
  24.  
  25. If you want to clone bass section a to synth section b and change only the symbols, clone first :all classes with clone-section-class, and then redefine symbol class with def-class.
  26.  
  27. (clone-section-class :all bass synth1
  28.    sect-a (sect-a sect-b)
  29. )
  30.  
  31. (def-class symbol synth1
  32.    sect-b (do-section :all '(symbol-transpose 1 x) (same-as sect-b))
  33. )
  34.  
  35. Note how the same-as refers to the same 'symbol 'synth1 'b, and returns the binding for this entity made before in the clone-section-class.
  36.  
  37. The next example shows you how to clone sections and instruments while making changes to them. The basic idea is the same, but there is one rule of thumb you have to keep in mind. If you clone sections using the do-section you can clone only one class at a time, like the symbol class in this example. You cannot clone multiple classes because the same do-section operation cannot always be applied to all classes. If you try to compile multiple classes with operation then no operations will be performed for any of the classes, and they are copied 'as is'.
  38.  
  39. (clone-section-class symbol bass (synth1 synth2)
  40.    sect-a sect-a (do-section :all '(symbol-transpose 1 x))
  41.    sect-a sect-b (do-section :all '(symbol-transpose 2 x))
  42.    sect-b (sect-c sect-e) nil
  43. )
  44.  
  45. See do-section for more information how the operation is distributed. Here the :all keyword refers to all zones for this section.
  46.